import os
import sys
from rag_chain import RAGChain
from text_processor import TextVectorizer

# 设置环境变量，避免认证问题
os.environ['TEST_JWT_TOKEN'] = 'test_token'

def debug_rag_chain(phone_number="13812345678"):
    print(f"=== 调试RAG链 - 电话号码: {phone_number} ===")

    # 1. 初始化向量器
    print("1. 初始化向量器...")
    vectorizer = TextVectorizer()
    print(f"向量器初始化完成: {vectorizer}")

    # 2. 准备测试文档
    print("2. 准备测试文档...")
    test_doc = "客户信息：公司名称上海科技发展有限公司，联系人张三，职位技术总监，电话号码13812345678，邮箱zhangsan@sh-tech.com。"
    metadata = {"doc_id": "test_doc_1", "source": "test_file.txt"}
    print(f"测试文档: {test_doc}")
    print(f"元数据: {metadata}")

    # 3. 添加文档到向量器
    print("3. 添加文档到向量器...")
    try:
        # 使用vectorize_and_store方法添加文档
        vectorizer.vectorize_and_store(test_doc, metadata)
        print("文档添加成功")
    except Exception as e:
        print(f"文档添加失败: {str(e)}")
        sys.exit(1)

    # 4. 直接使用向量器查询
    print("4. 直接使用向量器查询...")
    try:
        vectorizer_results = vectorizer.query(phone_number, n_results=3, similarity_metric="cosine")
        print(f"向量器查询结果: {vectorizer_results}")
    except Exception as e:
        print(f"向量器查询失败: {str(e)}")
        sys.exit(1)

    # 5. 初始化RAG链
    print("5. 初始化RAG链...")
    # 使用假的API密钥，因为我们只测试检索部分
    rag_chain = RAGChain(deepseek_api_key="fake_key", vectorizer=vectorizer)
    print(f"RAG链初始化完成: {rag_chain}")

    # 6. 使用RAG链检索相关文档
    print("6. 使用RAG链检索相关文档...")
    try:
        rag_results = rag_chain.retrieve_relevant_documents(phone_number)
        print(f"RAG链检索结果: {rag_results}")
    except Exception as e:
        print(f"RAG链检索失败: {str(e)}")
        sys.exit(1)

    # 7. 运行完整的RAG链
    print("7. 运行完整的RAG链...")
    try:
        full_result = rag_chain.run(phone_number)
        print(f"完整RAG链结果: {full_result}")
        # 特别检查references字段
        print(f"References: {full_result.get('references', [])}")
    except Exception as e:
        print(f"完整RAG链运行失败: {str(e)}")
        sys.exit(1)

    print("=== 调试完成 ===")

if __name__ == "__main__":
    debug_rag_chain()